from typing import List

from llama_index.core.schema import Document, BaseNode
from llama_index.core.node_parser import TokenTextSplitter

from ..node_parser_interface import NodeParserInterface
from .token_text_splitter_config import TokenTextSplitterConfig


class TokenTextSplitterParser(NodeParserInterface):
    """
    一个实现了 NodeParserInterface 的具体解析器，
    它在内部使用 LlamaIndex 的 TokenTextSplitter。
    """

    def __init__(self, config: TokenTextSplitterConfig):
        self._config = config
        self._parser = TokenTextSplitter(
            chunk_size=config.chunk_size,
            chunk_overlap=config.chunk_overlap,
            separator=config.separator,
            include_prev_next_rel=config.include_prev_next_rel,
        )

    def parse_nodes(self, documents: List[Document]) -> List[BaseNode]:
        """
        使用配置好的 TokenTextSplitter 来执行节点解析。
        """
        return self._parser.get_nodes_from_documents(documents) 